汇编开发环境的搭建和使用

您所在的位置:网站首页 call datacate 汇编开发环境的搭建和使用

汇编开发环境的搭建和使用

2024-07-09 21:48| 来源: 网络整理| 查看: 265

1、实验内容

编写程序,判断一个年份是否是闰年。

2、实验步骤

汇编语言程序设计上机过程如图1.1所示。

 

图1.1  汇编语言程序上机过程

 

(一)用编辑程序EDIT建立汇编语言源程序文件(ASM文件)

例如,编写程序,判断一个年份是否是闰年的汇编语言源程序,可以在DOS模式下用编辑程序EDIT.EXE建立汇编语言源程序文件ABC.ASM,注意文件名的扩展名必须是.ASM。也可以在Windows 2000或者在Windows XP环境下鼠标单击“开始”→“运行”,在“运行”中输入“CMD”进入DOS模式,运行EDIT软件,例如:

C> EDIT  ABC.ASM

进入EDIT的程序编辑画面时,输入汇编语言源程序如下: 

        DATA  SEGMENT

       INFON  DB        0DH,0AH,'Please input a year: $'

           Y  DB        0DH,0AH,'This is a leap year! $'

           N  DB        0DH,0AH,'This is not a leap year! $'

           W  DW        0

         BUF  DB        8

              DB        ?

              DB        8 DUP(?)

        DATA  ENDS

       STACK  SEGMENT   'stack'

              DB        200 DUP(0)

       STACK  ENDS

        CODE  SEGMENT

              ASSUME    DS:DATA,SS:STACK,CS:CODE

      START:  MOV       AX,DATA

              MOV       DS,AX

              LEA       DX,INFON

              MOV       AH,9

              INT       21H

              LEA       DX,BUF

              MOV       AH,10

              INT       21H

              MOV       CL, [BUF+1]

              LEA       DI,BUF+2

              CALL      DATACATE

              CALL      IFYEARS

              JC        A1

              LEA       DX,N

              MOV       AH,9

              INT       21H

              JMP       EXIT

         A1:  LEA       DX,Y

              MOV       AH,9

              INT       21H

       EXIT:  MOV       AH,4CH

              INT       21H

    DATACATE  PROC      NEAR

              LEA       SI,BUF+2

              MOV       BX,0

         X3:

              MOV       AL ,[SI]

              SUB       AL ,30H

              MOV       AH,0

              XCHG      AX,BX

              MOV       DX,10D

              MUL       DX

              XCHG      AX,BX

              ADD       BX,AX

              INC       SI

              LOOP      X3

              MOV       W,BX

              RET

    DATACATE  ENDP

     IFYEARS  PROC      NEAR

              PUSH      BX

              PUSH      CX

              PUSH      DX

              MOV       AX,W

              MOV       CX,AX

              MOV       DX,0

              MOV       BX,4

              DIV       BX

              CMP       DX,0

              JNZ       LAB1

              MOV       AX,CX

              MOV       BX,100

              DIV       BX

              CMP       DX,0

              JNZ       LAB2

              MOV       AX,CX

              MOV       BX,400

              DIV       BX

              CMP       DX,0

              JZ        LAB2

       LAB1:  CLC

              JMP       LAB3

       LAB2:  STC

       LAB3:  POP       DX

              POP       CX

              POP       BX

              RET

     IFYEARS  ENDP

        CODE  ENDS

              END       START

 

(二)用汇编程序MASM将ASM文件汇编成目标程序文件(OBJ文件)

 

当源程序建立以后,仍以ABC.ASM程序为例,我们用汇编程序MASM对ABC.ASM源程序文件进行汇编,以便产生机器码的目标程序文件ABC.OBJ,其操作步骤如下: 

         C>MASM ABC

    Microsoft (R) Macro Assembler Version 5.00

    Copyright (C) Microsoft Corp 1981–1985,1987. All rights reserved.

        Object filename [ABC.OBJ]:

    Source listing [NUL.LST]:ABC

    Cross-reference [NUL.CRF]:ABC

50674 + 450574 Bytes symbol space free

0 Warning Errors

0 Severe  Errors

由此可知,汇编程序调入后,首先显示版本号,然后出现三个提示行。

第一个提示行为:Object filename [ABC.OBJ]:

这是询问目标程序文件名,方括号内为机器规定的默认的文件名,通常直接按回车键,表示采用默认的文件名(如上所示),这是我们汇编的主要目的。 

第二个提示行为:  Source listing [NUL.LST]:

这是询问是否建立列表文件。若不建立,直接回车;若要建立,可以输入文件名ABC再回车,表示要建立名为ABC的列表文件。列表文件中同时列出源程序和机器语言程序清单,并给出符号表,有利于程序调试。 

第三个提示行为:Cross-reference [NUL.CRF]:

这是询问是否要建立交叉索引文件。若不建立,则直接回车;若要建立,可以输入文件名ABC,表示要建立ABC.CRF文件。由于.CRF是非文本文件,为了建立交叉索引文件,还必须调用CREF.EXE程序,即输入: 

C>CREF ABC

    Microsoft (R) Cross-Reference Utility Version 5.00

    Copyright (C) Microsoft Corp 1981–1985,1987. All rights reserved.

    listing [ABC.REF]:

    17  Symbols

这时首先显示版本号,然后出现一个提示行:Listing [ABC.REF]:

这是询问交叉索引文件名。这时可用回车承认方括号内机器默认的文件名,如上所示。这样就建立了ABC.REF文件。其内容是用户定义的所有符号(包括变量),并给出每个符号定义所在的行号(附以#)以及引用的行号。如下是ABC.REF文件的内容:

Microsoft Cross-Reference  Version 5.00       Sat Dec 01 18:49:42 2007

  Symbol Cross-Reference     (# definition, + modification) Cref-1

A1 . . . . . . . . . . . . . . .   42     47#

BUF. . . . . . . . . . . . . . .   15#    35     38     39     55  

CODE . . . . . . . . . . . . . .   28#    29    111  

DATA . . . . . . . . . . . . . .    1#    21     29     30  

DATACATE . . . . . . . . . . . .   40     53#    80  

EXIT . . . . . . . . . . . . . .   46     50#

IFYEARS. . . . . . . . . . . . .   41     82#   110  

INFON. . . . . . . . . . . . . .    2#    32  

LAB1 . . . . . . . . . . . . . .   92    103#

LAB2 . . . . . . . . . . . . . .   97    102    105#

LAB3 . . . . . . . . . . . . . .  104    106#

N. . . . . . . . . . . . . . . .   10#    43  

STACK. . . . . . . . . . . . . .   22#    22     27     29  

START. . . . . . . . . . . . . .   30#   112  

W. . . . . . . . . . . . . . . .   14#    76+    86  

X3 . . . . . . . . . . . . . . .   60#    73  

Y. . . . . . . . . . . . . . . .    6#    47  

 17 Symbols

 

调入汇编程序,当我们回答了上述各提示行的询问之后,汇编程序就对源程序进行汇编。若汇编过程中发现源程序有语法错误,则列出有错误的语句和错误的代码。错误分警告错误(Wraning Errors)和严重错误(Severe Errors)。警告错误是指汇编程序认为的一般性错误;严重错误是指汇编程序认为无法进行正确汇编的错误,并给出错误的个数及行号、错误的性质等。这时,就要对错误进行分析,找出问题和原因,然后再调用编辑程序加以修改,修改后重新汇编,直到汇编后无错误为止。 

 

(三) 用连接程序LINK生成可执行程序文件(EXE文件)

 

经汇编后产生的二进制的目标程序文件(OBJ文件)并不是可执行程序文件(EXE文件),必须经连接以后,才能成为可执行文件。连接程序并不是专为汇编语言程序设计的。如果一个程序是由若干个模块组成的,也可通过连接程序LINK把它们连接在一起。这些模块可以是汇编程序产生的目标文件,也可以是高级语言编译程序产生的目标文件。 

连接过程如下:

C>LINK  ABC

Microsoft (R) Overlay Linker Version 3.60

Copyright (C) Microsoft Corp 1983-1987. All rights reserved.

Run File [ABC.EXE]:

List File [NUL.MAP]:ABC

Libraries [.LIB]: 

在连接程序调入后,首先显示版本号,然后出现三个提示行。

第一个提示行为:Run File [ABC.EXE]:

这是询问要产生的可执行文件的文件名。一般直接回车采用方括号内规定的隐含文件名。

第二个提示行为:List File [NUL.MAP]:

这是询问是否要建立连接映象文件。若不建立,则直接回车;若要建立,则输入文件名再回车。如果要建立该文件,可以输入文件名ABC。 

第三个提示行为:Libraries [.LIB]:

这是询问是否用到库文件。若无特殊需要,则直接回车即可。

上述提示行回答后,连接程序开始连接。若连接过程中有错,则显示错误信息,错误分析清楚后,要重新调入编辑程序进行修改,然后重新汇编,再经过连接,直至无错为止。连接以后,便产生了可执行程序文件(EXE文件)。 

 

(四) 程序的执行

 

当我们建立了可执行文件ABC.EXE后,就可直接在DOS下执行该程序:

  C>ABC

根据程序提示,输入一个年份,计算机会输出是否闰年的结果。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3